<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>syevr</title>
<link rel="stylesheet" href="../../../../boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Boost.Numeric_Bindings">
<link rel="up" href="../driver_routines.html" title="Driver Routines">
<link rel="prev" href="syevd.html" title="syevd">
<link rel="next" href="syevx.html" title="syevx">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="syevd.html"><img src="../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../driver_routines.html"><img src="../../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../images/home.png" alt="Home"></a><a accesskey="n" href="syevx.html"><img src="../../../../images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
<a name="boost_numeric_bindings.reference.lapack.driver_routines.syevr"></a><a class="link" href="syevr.html" title="syevr">syevr</a>
</h5></div></div></div>
<a name="boost_numeric_bindings.reference.lapack.driver_routines.syevr.prototype"></a><h6>
<a name="id899052"></a>
            <a class="link" href="syevr.html#boost_numeric_bindings.reference.lapack.driver_routines.syevr.prototype">Prototype</a>
          </h6>
<p>
            There is one prototype of <code class="computeroutput"><span class="identifier">syevr</span></code>
            available, please see below. 
</p>
<pre class="programlisting"><span class="identifier">syevr</span><span class="special">(</span> <span class="keyword">const</span> <span class="keyword">char</span> <span class="identifier">jobz</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span> <span class="identifier">range</span><span class="special">,</span> <span class="identifier">MatrixA</span><span class="special">&amp;</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Scalar</span> <span class="special">&gt;,</span>
        <span class="keyword">const</span> <span class="identifier">Scalar</span> <span class="special">&gt;,</span> <span class="keyword">const</span> <span class="identifier">int_t</span> <span class="identifier">il</span><span class="special">,</span>
        <span class="keyword">const</span> <span class="identifier">int_t</span> <span class="identifier">iu</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Scalar</span> <span class="special">&gt;,</span> <span class="identifier">int_t</span><span class="special">&amp;</span> <span class="identifier">m</span><span class="special">,</span>
        <span class="identifier">VectorW</span><span class="special">&amp;</span> <span class="identifier">w</span><span class="special">,</span> <span class="identifier">MatrixZ</span><span class="special">&amp;</span> <span class="identifier">z</span><span class="special">,</span> <span class="identifier">VectorISUPPZ</span><span class="special">&amp;</span> <span class="identifier">isuppz</span> <span class="special">);</span>
</pre>
<p>
          </p>
<a name="boost_numeric_bindings.reference.lapack.driver_routines.syevr.description"></a><h6>
<a name="id899378"></a>
            <a class="link" href="syevr.html#boost_numeric_bindings.reference.lapack.driver_routines.syevr.description">Description</a>
          </h6>
<p>
            <code class="computeroutput"><span class="identifier">syevr</span></code> (short for $FRIENDLY_NAME)
            provides a C++ interface to LAPACK routines SSYEVR and DSYEVR. <code class="computeroutput"><span class="identifier">syevr</span></code> computes selected eigenvalues
            and, optionally, eigenvectors of a real symmetric matrix A. Eigenvalues
            and eigenvectors can be selected by specifying either a range of values
            or a range of indices for the desired eigenvalues.
          </p>
<p>
            <code class="computeroutput"><span class="identifier">syevr</span></code> first reduces the
            matrix A to tridiagonal form T with a call to DSYTRD. Then, whenever
            possible, <code class="computeroutput"><span class="identifier">syevr</span></code> calls
            DSTEMR to compute the eigenspectrum using Relatively Robust Representations.
            DSTEMR computes eigenvalues by the dqds algorithm, while orthogonal eigenvectors
            are computed from various "good" L D L^T representations (also
            known as Relatively Robust Representations). Gram-Schmidt orthogonalization
            is avoided as far as possible. More specifically, the various steps of
            the algorithm are as follows.
          </p>
<p>
            For each unreduced block (submatrix) of T, (a) Compute T - sigma I =
            L D L^T, so that L and D define all the wanted eigenvalues to high relative
            accuracy. This means that small relative changes in the entries of D
            and L cause only small relative changes in the eigenvalues and eigenvectors.
            The standard (unfactored) representation of the tridiagonal matrix T
            does not have this property in general. (b) Compute the eigenvalues to
            suitable accuracy. If the eigenvectors are desired, the algorithm attains
            full accuracy of the computed eigenvalues only right before the corresponding
            vectors have to be computed, see steps c) and d). (c) For each cluster
            of close eigenvalues, select a new shift close to the cluster, find a
            new factorization, and refine the shifted eigenvalues to suitable accuracy.
            (d) For each eigenvalue with a large enough relative separation compute
            the corresponding eigenvector by forming a rank revealing twisted factorization.
            Go back to (c) for any clusters that remain.
          </p>
<p>
            The desired accuracy of the output can be specified by the input parameter
            ABSTOL.
          </p>
<p>
            For more details, see DSTEMR's documentation and: - Inderjit S. Dhillon
            and Beresford N. Parlett: "Multiple representations to compute orthogonal
            eigenvectors of symmetric tridiagonal matrices," Linear Algebra
            and its Applications, 387(1), pp. 1-28, August 2004. - Inderjit Dhillon
            and Beresford Parlett: "Orthogonal Eigenvectors and Relative Gaps,"
            SIAM Journal on Matrix Analysis and Applications, Vol. 25, 2004. Also
            LAPACK Working Note 154. - Inderjit Dhillon: "A new O(n^2) algorithm
            for the symmetric tridiagonal eigenvalue/eigenvector problem", Computer
            Science Division Technical Report No. UCB/CSD-97-971, UC Berkeley, May
            1997.
          </p>
<p>
            Note 1 : <code class="computeroutput"><span class="identifier">syevr</span></code> calls
            DSTEMR when the full spectrum is requested on machines which conform
            to the ieee-754 floating point standard. <code class="computeroutput"><span class="identifier">syevr</span></code>
            calls DSTEBZ and SSTEIN on non-ieee machines and when partial spectrum
            requests are made.
          </p>
<p>
            Normal execution of DSTEMR may create NaNs and infinities and hence may
            abort due to a floating point exception in environments which do not
            handle NaNs and infinities in the ieee standard default manner.
          </p>
<p>
            The selection of the LAPACK routine is done during compile-time, and
            is determined by the type of values contained in type <code class="computeroutput"><span class="identifier">MatrixA</span></code>.
            The type of values is obtained through the <code class="computeroutput"><span class="identifier">value_type</span></code>
            meta-function <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">value_type</span><span class="special">&lt;</span><span class="identifier">MatrixA</span><span class="special">&gt;::</span><span class="identifier">type</span></code>. The dispatching table below illustrates
            to which specific routine the code path will be generated.
          </p>
<div class="table">
<a name="boost_numeric_bindings.reference.lapack.driver_routines.syevr.dispatching_of_syevr"></a><p class="title"><b>Table&#160;1.179.&#160;Dispatching of syevr</b></p>
<div class="table-contents"><table class="table" summary="Dispatching of syevr">
<colgroup>
<col>
<col>
</colgroup>
<thead><tr>
<th>
                    <p>
                      Value type of MatrixA
                    </p>
                  </th>
<th>
                    <p>
                      LAPACK routine
                    </p>
                  </th>
</tr></thead>
<tbody>
<tr>
<td>
                    <p>
                      <code class="computeroutput"><span class="keyword">float</span></code>
                    </p>
                  </td>
<td>
                    <p>
                      SSYEVR
                    </p>
                  </td>
</tr>
<tr>
<td>
                    <p>
                      <code class="computeroutput"><span class="keyword">double</span></code>
                    </p>
                  </td>
<td>
                    <p>
                      DSYEVR
                    </p>
                  </td>
</tr>
</tbody>
</table></div>
</div>
<br class="table-break"><a name="boost_numeric_bindings.reference.lapack.driver_routines.syevr.definition"></a><h6>
<a name="id899753"></a>
            <a class="link" href="syevr.html#boost_numeric_bindings.reference.lapack.driver_routines.syevr.definition">Definition</a>
          </h6>
<p>
            Defined in header <code class="computeroutput">boost/numeric/bindings/lapack/driver/syevr.hpp</code>.
          </p>
<a name="boost_numeric_bindings.reference.lapack.driver_routines.syevr.parameters_or_requirements_on_types"></a><h6>
<a name="id899794"></a>
            <a class="link" href="syevr.html#boost_numeric_bindings.reference.lapack.driver_routines.syevr.parameters_or_requirements_on_types">Parameters
            or Requirements on Types</a>
          </h6>
<div class="variablelist">
<p class="title"><b>Parameters</b></p>
<dl>
<dt><span class="term">MatrixA</span></dt>
<dd><p>
                  The definition of term 1
                </p></dd>
<dt><span class="term">MatrixB</span></dt>
<dd><p>
                  The definition of term 2
                </p></dd>
<dt><span class="term">MatrixC</span></dt>
<dd>
<p>
                  The definition of term 3.
                </p>
<p>
                  Definitions may contain paragraphs.
                </p>
</dd>
</dl>
</div>
<a name="boost_numeric_bindings.reference.lapack.driver_routines.syevr.complexity"></a><h6>
<a name="id899880"></a>
            <a class="link" href="syevr.html#boost_numeric_bindings.reference.lapack.driver_routines.syevr.complexity">Complexity</a>
          </h6>
<a name="boost_numeric_bindings.reference.lapack.driver_routines.syevr.example"></a><h6>
<a name="id899907"></a>
            <a class="link" href="syevr.html#boost_numeric_bindings.reference.lapack.driver_routines.syevr.example">Example</a>
          </h6>
<p>
            
</p>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">numeric</span><span class="special">/</span><span class="identifier">bindings</span><span class="special">/</span><span class="identifier">lapack</span><span class="special">/</span><span class="identifier">driver</span><span class="special">/</span><span class="identifier">syevr</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">bindings</span><span class="special">;</span>

<span class="identifier">lapack</span><span class="special">::</span><span class="identifier">syevr</span><span class="special">(</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">y</span><span class="special">,</span> <span class="identifier">z</span> <span class="special">);</span>

</pre>
<p>
          </p>
<p>
            this will output
          </p>
<p>
            
</p>
<pre class="programlisting"><span class="special">[</span><span class="number">5</span><span class="special">]</span> <span class="number">0</span> <span class="number">1</span> <span class="number">2</span> <span class="number">3</span> <span class="number">4</span> <span class="number">5</span>
</pre>
<p>
          </p>
<a name="boost_numeric_bindings.reference.lapack.driver_routines.syevr.notes"></a><h6>
<a name="id900192"></a>
            <a class="link" href="syevr.html#boost_numeric_bindings.reference.lapack.driver_routines.syevr.notes">Notes</a>
          </h6>
<a name="boost_numeric_bindings.reference.lapack.driver_routines.syevr.see_also"></a><h6>
<a name="id900216"></a>
            <a class="link" href="syevr.html#boost_numeric_bindings.reference.lapack.driver_routines.syevr.see_also">See
            Also</a>
          </h6>
<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
                Originating Fortran source files <a href="http://www.netlib.org/lapack/single/ssyevr.f" target="_top">ssyevr.f</a>
                and <a href="http://www.netlib.org/lapack/double/dsyevr.f" target="_top">dsyevr.f</a>
                at Netlib.
              </li></ul></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002 -2009 Rutger ter Borg, Kre&#353;imir Fresl, Thomas Klimpel,
      Toon Knapen, Karl Meerbergen<p>
        Distributed under the Boost Software License, Version 1.0. (See accompanying
        file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
      </p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="syevd.html"><img src="../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../driver_routines.html"><img src="../../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../images/home.png" alt="Home"></a><a accesskey="n" href="syevx.html"><img src="../../../../images/next.png" alt="Next"></a>
</div>
</body>
</html>
